package roborally.supporting;

import roborally.factory.PhysicalAmountFactory;

/**
 * A class representing all the different constants used by the program. We have chosen to collect
 * all the constants in one class as public static fields so that they are easily found.
 * 
 * @author Molderez Tom, 2de bach Ingenieurswetenschappen Computerwetenschappen-Elektrotechniek and Reniers Jorn, 2de bach Ingenieurswetenschappen Werktuigkunde-Computerwetenschappen
 * @version 1.0
 */ 
public class DefaultConstants {
	
	/**
	 * The energy needed to move a robot.
	 */
	public final static PhysicalAmount ROBOT_ENERGY_MOVEMENT = PhysicalAmountFactory.get().create(500D,Unit.WATTSECOND);
	
	/**
	 * The energy needed for moving in WATTSECOND per weight in GRAM.
	 */
	public final static double ROBOT_ENERGY_MOVEMENT_PER_WEIGHT = 0.05D; // 50 per kilogram of 0.05 per gram
	
	/**
	 * The energy needed to turn a robot.
	 */
	public final static PhysicalAmount ROBOT_ENERGY_TURN = PhysicalAmountFactory.get().create(100D,Unit.WATTSECOND);
	
	/**
	 * The default energy limit of robots.
	 */
	public final static PhysicalAmount ROBOT_ENERGY_LIMIT = PhysicalAmountFactory.get().create(20000D,Unit.WATTSECOND);
	
	/**
	 * The default energy to shoot.
	 */
	public final static PhysicalAmount ROBOT_ENERGY_SHOOT = PhysicalAmountFactory.get().create(1000D,Unit.WATTSECOND);
	
	/**
	 * The energy damage of a robot when been hit.
	 */
	public final static PhysicalAmount ROBOT_BEEN_HIT = PhysicalAmountFactory.get().create(4000D, Unit.WATTSECOND);
	
	/**
	 * The default energy limit of batteries.
	 */
	public final static PhysicalAmount BATTERY_ENERGY_LIMIT = PhysicalAmountFactory.get().create(5000D,Unit.WATTSECOND);
	
	/**
	 * The default energy to add when a battery is hit.
	 */
	public final static PhysicalAmount BATTERY_BEEN_HIT = PhysicalAmountFactory.get().create(500D, Unit.WATTSECOND);
	
	/**
	 * The default weight of a battery.
	 */
	public final static PhysicalAmount BATTERY_WEIGHT = PhysicalAmountFactory.get().create(10, Unit.GRAM);

	
	/**
	 * The default x limit of boards.
	 */
	public final static long BOARD_UPPER_LIMIT_X = Long.MAX_VALUE;
	
	/**
	 * The default y limit of boards.
	 */
	public final static long BOARD_UPPER_LIMIT_Y = Long.MAX_VALUE;
	
	/**
	 * The default conversing factor from energy from a repair kit to a robot.
	 */
	public final static double REPAIR_KIT_FACTOR = 0.5;
	
	/**
	 * The default energy to add when a repair kit is hit.
	 */
	public final static PhysicalAmount REPAIR_KIT_BEEN_HIT = PhysicalAmountFactory.get().create(500D, Unit.WATTSECOND);
	
	/**
	 * The upper energy limit of a repair kit.
	 */
	public final static PhysicalAmount REPAIR_KIT_UPPER_ENERGY_LIMIT = PhysicalAmountFactory.get().create(Double.MAX_VALUE, Unit.WATTSECOND);
	 //"the energy stored in a repairKit can never exceed Double_max_value"
	/**
	 * The default energy limit of a repair kit.
	 */
	public final static PhysicalAmount REPAIR_KIT_ENERGY_LIMIT = PhysicalAmountFactory.get().create(10000, Unit.WATTSECOND);
	
	/**
	 * The default weight of a repair kit.
	 */
	public final static PhysicalAmount REPAIR_KIT_WEIGHT = PhysicalAmountFactory.get().create(5, Unit.GRAM);
	
	/**
	 * The default weight of a surprise box.
	 */
	public final static PhysicalAmount SURPISE_BOX_WEIGHT = PhysicalAmountFactory.get().create(15, Unit.GRAM);

	private DefaultConstants() {
		
	}
}
